In order to increase the wireless market to the greatest extent possible, wireless service providers and wireless equipment manufacturers constantly seek new ways to make wireless equipment and services as convenient, user-friendly, and affordable as possible. To that end, wireless service providers and the manufacturers of cell phones and other wireless mobile stations frequently work together to streamline procedures for enrolling and equipping new subscribers and for improving the services and equipment of existing subscribers.
One important aspect of these efforts involves over-the-air (OTA) provisioning and upgrading of wireless mobile stations, such as cell phones, wireless personal digital assistants (PDAs), wireless hand-held computers, two-way pagers, and the like. OTA provisioning is a relatively new feature that enables a new subscriber who purchases a new cell phone (or other mobile station) to set-up an account with a wireless service provider and to configure the phone for operation. The OTA provisioning procedure is mostly automated and does not require the new subscriber to visit a cell phone service center. Typically, the new subscriber removes the new cell phone from its box, calls a special purpose telephone number (given in the instructions), and performs an interactive provisioning procedure with an automated agent or a human service representative.
Over-the-air upgrading of wireless mobile stations also is a relatively new procedure that enables a subscriber to download and install upgraded software containing patches, bug fixes, and newer versions of mobile station software, including the operating system. The wireless service provider or the mobile station manufacturer, or both, may provide the upgraded software.
It has long been possible to download and to install software upgrades for a personal computer (PC) via the Internet. A personal computer has many resources available to perform a software upgrade, including dynamically linked libraries (DLLs), a memory management unit (MMU), and a large random access memory (RAM) space. A conventional PC software upgrade may be partitioned and downloaded to a personal computer as a group of shared objects. If one object file is corrupted or interrupted during transmission, only that object file needs to be re-transmitted. The object files that are properly received do not need to be re-transmitted. Once all object files are present, the operating system of the PC in conjunction with the memory management unit (MMU) loads all of the object files into RAM and re-links the object files to form a DLL.
However, a wireless mobile station (e.g., a cell phone) typically has far fewer resources available than a PC. Typically, mobile stations lack a memory management unit and code is not executed from RAM. Code is executed out of a Flash memory that acts as a read-only memory (ROM). The Flash memory generally cannot be written to, it can only be re-programmed with special command sequences. These resource limitations greatly complicate software upgrade operations in wireless mobile stations.
For example, one way to download new software to a mobile station is to download an entire new binary image file and store the new image file in temporary Flash memory. After the entire download is complete, the mobile station replaces the existing binary image file with the new image file. However, a single image file is too large to be reliably downloaded over an air link. Also, this method requires twice as much Flash memory, resulting in an increase in the cost of a cell phone.
Another way to download new software to a mobile station is to partition the software into small modules (DLLs). Each such DLL is dynamically linked on the cell mobile station at run-time. However, this method requires an enormous engineering effort to partition the cell phone firmware into logical and manageable DLLs. Also, multiple DLLs are difficult in terms of deployment and configuration management, since an error in the version information of a single DLL can render a cell phone unusable.
Therefore, there is a need in the art for improved systems and methods for performing automatic software upgrades of wireless handsets and other types of mobile stations. In particular, there is a need in the art for systems and methods for performing over-the-air software upgrades that require only small upgrade file sizes.